%quantitatif
%absence accès terminaux mobiles
%ajouter une page Nepomuk qui contient tout en attachment
%ajouter quelques métriques si possible
%il faudrait qu'on voit qui a fait quoi dans l'historique

\paragraph{Historique du chapitre}

\begin{center}
\begin{footnotesize}
\begin{tabular}{|p{2cm}|p{2cm}|p{6cm}|}\hline
\textbf{Date}&\textbf{Version}&\textbf{Changements}\\\hline
30/04/09& 0.8&        \\\hline
04/05/09& 1.0&
        \begin{itemize}
    \item Description des pages wiki stockant des RPM complets (documentation, RPM, fichiers du RPM et métadonnées du RPM): cf section \emph{Doc4}~\ref{sec:doc4} et \emph{Scénario de réplication de fichiers}~\ref{sec:fileandobjectsreplication}.
    \item Description plus précise du scénario de collaboration (section \emph{Rédaction collaborative en P2P}~\ref{sec:p2pedit}).
    \item Ajout de scenarios d'utilisation.
    \end{itemize}
    \\\hline
\end{tabular}
\end{footnotesize}
\end{center}



\section{Introduction}
\label{intro}

Le projet XWiki Concerto vise à mettre au point un système sécurisé de partage de contenus en mode pair-à-pair avec des fonctionnalités de travail en mode déconnecté et d'accessibilité depuis des terminaux mobiles. Ce chapitre présente la version 2.0 du cas d'utilisation Mandriva du prototype XWiki Concerto. Ce cas d'utilisation a donné lieu à la création d'une appllication de gestion collaborative de la documentation Mandriva. Cette application se nomme ``Doc4 Mandriva''. Elle exploite les capacités XWiki Concerto de réplication P2P, de gestion du réseau incluant l'entrée/sortie de pairs et le travail en mode déconnecté, et adapte l'environnement XWiki aux besoins spécifiques Mandriva. 

Ce chapitre décrit dans une première section l'architecture de Doc4 et son évolution depuis la version antérieure, dans une deuxième section des scenarios d'utilisation détaillés,  dans une troisième section l'évaluation qualitative et quantitative de l'application, et dans une dernière section les perspectives d'utilisation de l'application.

\section{L'application Doc4 Mandriva}
\label{sec:doc4}

L'application Doc4 Mandriva est destinée à la présentation et à l'édition collaborative de la documentation Mandriva. Cette documentation porte sur les logiciels inclus dans la distribution Mandriva Linux, qui en compte environ 20000. 

Doc4 associe une page wiki à chaque logiciel, et potentiellement si besoin à chaque version de logiciel, pages à travers lesquelles les membres de la communauté Mandriva sont invités à compléter la description des logiciels par des informations complémentaires, par exemple: des liens externes vers des tutoriels, des captures d'écran, des astuces générales ou spécifiques à Mandriva, des relations vers d'autres logiciels du même type, etc. 

Du point de vue XWiki Concerto, les données relatives à ces logiciels sont de quatre types: 

\paragraph{Données structurées non collaboratives} Il s'agit des données automatiquement extraites des paquets RPM Mandriva, comme par exemple la taille du logiciel empaqueté, sa page d'accueil, sa licence, les fichiers qu'il inclut etc. Ces données peuvent être stockées par Doc4 soit dans des pages XWiki sous la forme d'objets structurés, soit dans une base relationnelle indépendante d'XWiki. Le choix du mode de stockage et les critères de choix sont décrits ci-dessous (section ~\ref{sec:stockage}). 

\paragraph{Données non structurées collaboratives} Ces données sont les pages wiki proprement dites, contenant documentation, liens, exemples etc. Chaque page peut être déclinée dans différentes langues. Chaque page peut également contenir du code Velocity, pour par exemple afficher les dernières nouvelles publiées sur le site du logiciel, en incluant dans la page elle-même le flux RSS du site de référence.

\paragraph{Données structurées collaboratives} Il s'agit d'informations saisies sous la forme d'objets structurés XWiki. Dans le cas de Doc4, des objets structurés sont utilisés pour saisir les logiciels similaires au logiciel courant, ainsi que pour stocker l'identifiant Wikipedia du logiciel quand celui-ci existe. En plus de relier la documentation Doc4 à certaines pages de Wikipedia, le stockage, quand il existe, de l'identifiant Wikipedia de chaque logiciel permettra ultérieurement de compléter semi-automatiquement la documentation Doc4 par des informations en provenance de Wikipedia.

\paragraph{Données mixtes en accès restreint} Une équipe Mandriva utilise l'infrastructure Doc4 pour rédiger des tutoriels commerciaux de façon collaborative. Doc4 présente en particulier l'intérêt de leur permettre d'éditer ces documents de façon déconnectée. Ces tutoriels sont réservés aux clients Mandriva. La réplication de ces contenus sur le réseau P2P doit être sécurisée: les droits d'accès à ces documents doivent être cohérents sur tous les serveurs, et la propagation des informations contenus dans ces documents doit s'effectuer uniquement parmi les noeuds autorisés.

La figure~\ref{fig:home} présente la page d'accueil de Doc4 Mandriva sur un des noeuds du réseau P2P. La page d'accueil indique les derniers logiciels dont la documentation a été mise à jour, et propose des liens vers les catalogues logiciels des différentes versions de Mandriva (en l'occurrence la version 2009 Spring et la version de développement Mandriva Cooker). La documentation de chaque version de Mandriva est ensuite accessible via quatre points d'entrée, comme illustré par la figure~\ref{fig:distribhome}: 

\begin{itemize}
\item les groupes d'applications (jeux, bureautique, serveurs de base de données, etc.), 
\item les noms et versions d'applications, 
\item les contributeurs au projet Mandriva (employés ou membres de la communauté), 
\item la recherche. 
\end{itemize}

Chaque application est ensuite présentée sous la forme de fiche regroupant informations structurées et non-structurées, comme illustré par les figures \ref{fig:concertoapp} et \ref{fig:concertoapppkg}. La figure \ref{fig:concertoapp} représente la fiche sur Doc4 du logiciel Nepomuk-KDE. Chaque fiche contient quatre onglets: un onglet \emph{Wiki} qui présente la documentation du logiciel sous la forme d'une page wiki, un onglet \emph{Packages} listant les paquets RPM existants pour ce logiciel (paquets d'installation et éventuellement de mise à jour), bugs référencés pour ce logiciel, et annotations utilisateurs. La figure \ref{fig:concertoapppkg} représente le contenu du paquet \texttt{nepomuk-kde-4.2.0-0.916837.2mdv2009.1.src.rpm}: il s'agit du paquet permettant l'installation proprement dite du logiciel. Cette fiche reprend la page wiki de l'application, et indique en plus les fichiers fournis par le paquet, ses dépendances et ses scripts d'installation.


\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/home}
\end{framed}
\caption{Page d'accueil de l'application Doc4 Mandriva}
\label{fig:home}
\end{figure}


\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/distribhome}
\end{framed}
\caption{Accès aux descriptions d'applications par catégorie}
\label{fig:distribhome}
\end{figure}

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/software}
\end{framed}
\caption{Fiche de description d'un logiciel inclus dans Mandriva}
\label{fig:concertoapp}
\end{figure}

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/package}
\end{framed}
\caption{Fiche de description d'un paquet d'une application}
\label{fig:concertoapppkg}
\end{figure}


\subsection{Architecture}

\subsubsection{Mode de stockage des données non collaboratives}
\label{sec:stockage}

Les données non collaboratives présentes dans Doc4 (i.e. les métadonnées extraites automatiquement des paquets) peuvent être elles-mêmes stockées soit dans le module de persistence natif XWiki Concerto pour faciliter la réplication des contenus entre les différents pairs et donc l'administration du système, soit dans une base de données distincte d'XWiki. L'intégration complète dans XWiki Concerto consiste à créer des structures de métadonnées pour les paquets Mandriva contenant tous les attributs d'un paquet (licence, résumé, description, maintainer, taille etc.), toutes ses dépendances, et tous ses fichiers et scripts d'installation: les classes \texttt{Doc4.Package}, \texttt{Doc4.Dependency} et \texttt{Doc4.File} ont été créées pour le stockage de ces métadonnées. Cela représente des volumes de l'ordre de 500ko de métadonnées par paquet. La figure~\ref{fig:package-objects} représente les métadonnées d'un paquet sous la forme d'objets XWiki attachés à la page du paquet. Cette solution est opérationnelle pour les pages individuellement, mais lorsqu'elle est étendue à l'ensemble des 20000 paquets de la distribution, le temps de calcul de l'état du wiki est trop long dans l'état actuel du système pour que cette solution soit retenue en pratique. Il a donc été décidé d'utiliser un stockage relationnel distinct de la persistence XWiki native dans l'attente d'une gestion optimisée de l'état du système initial. 

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.6\linewidth]{figures/package-objects}
\end{framed}
\caption{Métadonnées stockées sous la forme d'objets XWiki}
\label{fig:package-objects}
\end{figure}

\subsubsection{Environnement réseau}

La version 2.0 de Doc4 Mandriva a été déployée sur quatre serveurs Internet, deux situés à Paris, deux à Curitiba au Brésil, et sur un serveur de l'intranet Mandriva. Doc4 Mandriva a également été déployée sur plusieurs postes de travail connectés à Internet par intermittence. Sur chaque machine, l'application est exécutée dans un conteneur applicatif Jetty, avec une machine virtuelle Java 6 et deux bases de données: une instance de HSQLDB stockant les pages wiki, et une instance de MySQL stockant les pages non destinées à la collaboration. Les pairs synchronisent leurs contenus via le protocole XWoot en échangeant les patchs des dernières modifications, tel que représenté sur la figure~\ref{fig:overview}.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/concerto-mandriva}
\end{framed}
\caption{Vue d'ensemble du cas d'utilisation Mandriva}
\label{fig:overview}
\end{figure}

Les données utilisées sont celle des paquets de la distribution Mandriva Linux Cooker, qui sont identiques au moment de l'écriture de ce rapport aux paquets de la distribution Mandriva 2009 Spring, la dernière version majeure de Mandriva. 


\subsection{Evolutions fonctionnelles}

Par rapport à la version précédente du démonstrateur XWiki Concerto Mandriva, plusieurs améliorations ont été apportées. Les évolutions fonctionnelles portent d'une part sur l'application Doc4 elle-même, d'autre part sur l'intégration des capacités nouvelles de XWiki Concerto en termes de réplication pair-à-pair. 

\subsubsection{Evolutions dans le support P2P}

Les évolutions de Doc4 bénéficiant directement des nouvelles fonctionnalités proposées par XWiki Concerto 2.0 sont les suivantes, et sont détaillées de façon plus approfondie dans la section ``Scenarios d'utilisation''~\ref{sec:scenarios}:

\begin{itemize}
\item possibilité de répliquer des données en volume nettement plus important en un temps réduit: dans la version en ligne de Doc4 Mandriva, plus de 100 pages wiki ont été crées, certaines contenant des pièces jointes, 
\item possibilité de répliquer des pièces jointes (images, documents PDF complémentaires etc.) et des objets structurés,
\item possibilité de participer au réseau P2P depuis une zone protégée par un parefeu,  
\item intégration du composant de réplication XWoot à XWiki Concerto au travers d'un panel dédié,
\item intégration de la stratégie sécurité XWiki Concerto 2.0 supportant les réseaux P2P sécurisés, 
\item amélioration des fonctions de connexion/déconnexion,
\item amélioration des fonctionnalités de contribution depuis une application client riche dédiée (XEclipse),
\item facilité d'installation et de configuration d'XWiki Concerto.
\end{itemize}


\subsubsection{Evolutions Doc4 générales}

Depuis la version 1.0 de Doc4, l'application a évolué autour des axes suivants:
\begin{itemize}
\item augmentation importante de la quantité de données collaboratives gérées par l'application (les pages wiki associées aux paquets Mandriva),
\item pré-remplissage automatique des pages wiki à leur création par des contenus extraits automatiquement des paquets Mandriva,
\item possibilité de contribuer avec des contenus non-structurés comme avec des contenus structurés,
\item ajout d'une section en accès restreint destinée à la rédaction de documents à caractère commercial, réservée aux employés Mandriva
\item plus grande facilité pour les utilisateurs à enrichir les données,
\item amélioration de l'ergonomie,
\item ajout d'un stockage complémentaire relationnel pour les données statiques ne se prêtant pas à la collaboration de la communauté,
\item intégration de l'application à la section communautaire du site institutionnel Mandriva \url{http://www.mandriva.com}.
\end{itemize}

Pour chaque paquet, un outil d'extraction de métadonnées stocke les données associées à chaque paquet de la distribution dans une base de données qui, comme indiqué plus haut peut être soit la base de données XWiki, soit une base de données distincte. Ces données comprennent les éléments suivants:
\begin{itemize}
\item la liste des fichiers du paquet et leur contenu,
\item la liste des dépendances du paquet (paquets devant être installés préalablement),
\item la liste des paquets dépendants du paquet courant,
\item les scripts de pre-installation et de post-installation,
\item les fichiers de configuration du paquet,
\item les fichiers de traduction du paquet,
\item les fichiers de documentation du paquet.
\end{itemize} 


\subsubsection{Adaptations XWiki}

La création de l'application Doc4 a nécessité les adapations suivantes d'XWiki:
\begin{itemize}
\item adaptation des gabarits d'affichage et des feuilles de style pour l'intégration du graphisme Mandriva,
\item création de scripts Groovy gérant l'accès aux données relationnelles et la présentation de logiciels en utilisant des gabarits dédiés,
\item création de nouvelles classes XWiki pour la gestion des relations entre logiciels, le lien avec Wikipedia, et pour la gestion des fichiers de paquets pour le cas des pages contenant toutes les méta-données de paquet en plus de leur documentation. La fonctionnalité de suggestion de logiciels similaires au logiciel consulté est gérée par des instances de la classe \texttt{Doc4.SeeAlso} qui permet de relier spécifiquement certains logiciels les uns aux autres. La classe \texttt{Doc4.WikipediaId} permet de stocker le lien entre un logiciel et sa page Wikipedia. Les classes \texttt{Doc4.Package}, \texttt{Doc4.Dependency} et \texttt{Doc4.File} ont quant à elle été utilisées pour tester le stockage des métadonnées de paquets dans le module de persistence natif XWiki. 
\end{itemize}


\subsection{Conditionnement Mandriva de l'application}

Afin de faciliter son déploiement d'une part, et d'impliquer une communauté de testeurs et d'utilisateurs aussi large que possible d'autre part, l'application XWiki Concerto a été conditionnée pour Mandriva sous la forme d'un RPM dans la section \emph{contrib} de Mandriva, qui est la section contenant des logiciels complémentaires au le coeur de la distribution. Ce RPM est téléchargeable depuis la zone de développement de Mandriva et sera installable en un clic dans la prochaine version majeure de Mandriva à savoir Mandriva 2010, qui sera disponible en octobre 2009.  

\section{Scenarios d'utilisation}
\label{sec:scenarios}

Cette section présente des scénarios d'utilisation P2P de Doc4 et leurs évolutions depuis la version antérieure d'XWiki Concerto.

\subsection{Création du réseau pair-à-pair}

La création d'un premier noeud sur le réseau passe par quatre étapes:
\begin{enumerate}
\item Saisie dans le fichier de configuration \texttt{xwoot-content-properties} de la webapp XWoot des espaces XWiki, des pages, des objets et des champs qui doivent être répliqués. Dans le cas d'utilisation Mandriva, la réplication XWoot est configurée pour propager les changements de toutes les pages des espaces \emph{Main}, \emph{wiki} et \emph{tutorials}, ainsi que tous les champs des objets \texttt{Doc4.WikipediaId}, \texttt{Doc4.SeeAlso}, \texttt{Doc4.Package}, \texttt{Doc4.Dependency}, et \texttt{Doc4.File}. L'espace \emph{wiki} est un espace en accès public dans lequel sont stockées les pages wiki décrivant les logiciels inclus dans la distribution Mandriva. L'espace \emph{tutorials} quant à lui concerne une zone de collaboration restreinte aux employés Mandriva, dans laquelle ceux-ci rédigent des tutoriels destinés à être commercialisés.
\item Configuration du serveur: compte d'accès à XWiki à utiliser pour la réplication, dossiers de gestion des données JXTA, nom du serveur (figure~\ref{fig:global-config})
\item Configuration des adresses de rendez-vous et de relais: le premier noeud est utilisé comme rendez-vous et comme relais. En conséquence, les options ``Route communication for this network'' et ``Relay communication for firewalled/NAT-ed peers'' sont cochées. L'option de communication par le protocole TCP est activée. 
\item Calcul de l'état du système.
\end{enumerate}

Ce premier noeud est dénommé \emph{Doc4-1} dans la suite du chapitre.

\begin{figure}[h]
\begin{framed}
\begin{verbatim}
ignore=.*
accept=Main.*,XWiki.Foo,wiki.*,tutorials.*
cumulative_classes=XWiki.XWikiComments,XWiki.CalendarEvent,\
    XWiki.XWikiRights, Doc4.SeeAlso, Doc4.WikipediaId,\
    Doc4.Dependency, Doc4.File
Doc4.SeeAlso.wootable_properties=seealso
Doc4.WikipediaId.wootable_properties=id
XWiki.XWikiComments.wootable_properties=highlight,comment
XWiki.CalendarEvent.wootable_properties=title,description,location
XWiki.TagClass.wootable_properties=tags
\end{verbatim}
\label{verbatim:xwoot-content}
\end{framed}
\caption{Configuration des espaces et objets à répliquer}
\label{fig:xwoot-content-config}
\end{figure}


\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/global-config}
\end{framed}
\caption{Configuration globale du premier noeud du réseau}
\label{fig:global-config}
\end{figure}

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/rdv-config}
\end{framed}
\caption{Configuration des points de rendez-vous et de relais}
\label{fig:rdv-config}
\end{figure}




Une fois le réseau initialisé, un deuxième serveur -- \emph{Doc4-2} dans la suite -- peut rejoindre le groupe créé en spécifiant l'adresse et le protocole du serveur utilisé pour le rendez-vous des pairs, et ceux du serveur utilisé pour le relais de messages. Le deuxième serveur doit ensuite spécifier le groupe à rejoindre, saisir le cas échéant le mot de passe protégeant ce réseau, et obtenir l'état du système, après quoi le nouveau noeud entre dans le cercle des serveurs du groupe, qui apparaissent sur la page de synchronisation d'XWoot (figure ~\ref{fig:join}). 

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/join}
\end{framed}
\caption{Etablissement de la liaison entre les deux premiers pairs}
\label{fig:join}
\end{figure}

L'établissement de la connexion avec les autres pairs se fait de la même manière. 

\subsection{Visualisation contextuelle de l'état du système}

Doc4 Mandriva bénéficie de l'intégration visuelle de l'état du composant de réplication XWoot à Doc4 au travers d'un panel dédié. Ce panel donne accès à l'application XWoot, indique l'état de connexion au réseau P2P, énumère les autres pairs participant au réseau, donne la date de dernière synchronisation et le résultat de celle-ci, fournit l'état de la connexion à XWiki et la liste des espaces ou des pages destinés à être répliqués, comme illustré par la figure~\ref{fig:xwootpanel}.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.6\linewidth]{figures/xwootpanel}
\end{framed}
\caption{Panel XWoot dans l'application Doc4}
\label{fig:xwootpanel}
\end{figure}

Le panel inclut un lien vers une page XWoot décrivant de façon plus détaillée l'état du système et les dernières opérations effectuées (figure \ref{fig:xwootapp}).

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.6\linewidth]{figures/xwootapp}
\end{framed}
\caption{Suivi détaillé de l'état du composant de réplication}
\label{fig:xwootapp}
\end{figure}

\subsection{Rédaction collaborative en mode pair-à-pair}
\label{sec:p2pedit}

La rédaction collaborative en mode pair-à-pair a été améliorée par rapport à la version précédente en terme d'ergonomie, de performance et de fiabilité. L'accès au mode d'édition est totalement intégré au contexte de l'application Doc4. Comme illustré par la figure~\ref{fig:editwikilink}, le passage d'une page contenant de nombreuses informations structurées, non-structurées, collaboratives ou non collaboratives à la page d'édition du wiki d'un logiciel s'effectue simplement, de même que l'ajout de fichiers et d'objets structurés, ainsi que le retour à la page initiale. 

Dans le cas des logiciels pour lesquels une page de documentation wiki n'a pas encore été créée, lorsque l'utilisateur clique sur le lien d'édition de page wiki, celle-ci est pré-remplie automatiquement par la description extraite du logiciel correspondant. La réplication des données et leur intégration dans chaque pair XWiki Conocerto se fait ensuite de façon beaucoup plus rapide que dans la première version du prototype (de l'ordre de la seconde pour chaque page, contre plusieurs secondes dans la version précédente).

Le panel d'édition de pages (figure~\ref{fig:editwiki}) inclut un lien direct vers les fichiers attachés à la page courante, pour éviter d'avoir à passer en mode de visualisation pour attacher des pièces jointes à la page en cours d'édition.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/editwikilink1}
\end{framed}
\caption{Passage du mode de consultation au mode d'édition}
\label{fig:editwikilink}
\end{figure}


\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/editwiki}
\end{framed}
\caption{Edition wiki d'une page de documentation: ajout de contenu sur le pair Doc4-1}
\label{fig:editwiki}
\end{figure}


\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/editedwiki}
\end{framed}
\caption{Visualisation du contenu modifié sur le pair Doc4-2}
\label{fig:editwiki}
\end{figure}


\subsection{Réplication de fichiers et d'objets}
\label{sec:fileandobjectsreplication}

De nombreuses pages wiki de Doc4 Mandriva enrichissent la description textuelle des logiciels de plusieurs illustrations directement stockées dans la base de données applicative. Sur la figure~\ref{fig:addimage}, l'utilisateur courant ajoute une image à la page wiki associée au logiciel Nepomuk-KDE -- outil d'annotation de fichiers. Sur la figure~\ref{fig:addobjects} il ajoute à cette même page un objet de la classe \texttt{Doc4.WikipediaId} permettant de faire le lien avec la page Wikipedia correspondante~\url{http://en.wikipedia.org/wiki/Nepomuk\_(framework)} et un objet de la classe \texttt{Doc.SeeAlso} indiquant l'existence d'un lien entre Nepomuk-KDE et Strigi, moteur d'extraction automatique de métadonnées. Ces images et objets sont ensuite effectivement répliqués sur les pairs du réseau, comme le montre la figure~\ref{fig:addedobjects}.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/addimage}
\end{framed}
\caption{Ajout d'un fichier attaché sur Doc4-1}
\label{fig:addimage}
\end{figure}


\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/addobjects}
\end{framed}
\caption{Ajout d'objets structurés à une page wiki sur Doc4-1}
\label{fig:addobjects}
\end{figure}


\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/addedobjects}
\end{framed}
\caption{Réplication et visualisation d'une image et d'objets structurés sur Doc4-2}
\label{fig:addedobjects}
\end{figure}


L'historique des modifications sur le pair Doc4-2 présente les modifications successives opérées par l'utilisateur applicatif \emph{Concerto} qui effectue les opérations d'application des patchs. Dans la version courante du prototype, l'utilisateur à l'origine des modifications n'est pas restitué dans l'historique.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/history}
\end{framed}
\caption{Visualisation de l'historique des modifications}
\label{fig:editwiki}
\end{figure}


\subsection{Contributions depuis une zone protégée}

A des fins d'expérimentation d'une part, et pour une performance optimale d'accès en édition d'autre part, un serveur Doc4 a été installé dans le réseau local Mandriva, protégé de l'Internet par un parefeu. Les employés Mandriva effectuent alors des mises à jour de pages de documentation directement sur le serveur de l'intranet, et celles-ci sont bien propagées vers l'extérieur. Inversement, les pages modifiées sur le réseau externe sont également bien propagées sur le réseau interne, grâce à l'architecture réseau XWiki Concerto 2.0 exploitant les possibilités de relais point à point sur un réseau JXTA.

 \subsection{Travail en mode déconnecté}

Les utilisateurs de la plateforme Doc4 ont la possibilité via le support du mode déconnecté d'XWiki Concerto 2.0 de naviguer dans la documentation des logiciels Mandriva et d'éditer les contenus wiki même lorsqu'ils ne sont pas connectés au réseau.  La procédure de passage en mode déconnecté nécessite d'installer au préalable une version d'XWiki Concerto 2.0 sur le poste utilisateur, et d'effectuer avec le réseau P2P une synchronisation des pages destinées à être éditées. La déconnexion s'effectue par un clic sur le bouton prévu à cet effet dans l'interface d'administration de XWoot (figure ~\ref{fig:offline-work}). La consultation et l'édition locales se font alors selon les procédures habituelles. Lorsque le poste de l'utilisateur est de nouveau connecté au réseau Internet, la reconnexion au réseau P2P XWiki Concerto s'effectue via l'interface d'administration XWoot. Une fois reconnecté, la propagation à l'ensemble des pairs des changements effectués localement est déclenchée.
 
\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/disconnect}
\end{framed}
\caption{Passage en mode déconnecté}
\label{fig:offline-work}
\end{figure}

En mode déconnecté comme en mode connecté, l'utilisateur peut bénéficier de fonctions d'édition avancée via l'interface XEclipse, comme l'illustre la figure~\ref{fig:xeclipse} montrant l'édition de la page wiki du logiciel Nepomuk-KDE.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/xeclipse}
\end{framed}
\caption{Edition de contenu Doc4 via XEclipse en mode déconnecté}
\label{fig:xeclipse}
\end{figure}


\subsection{Gestion de pages en accès restreints}

Doc4 Mandriva inclut des pages en accès restreint dans l'espace \emph{tutorials}. A travers la réplication des objets \texttt{XWiki.XWikiRights}, XWiki Concerto 2.0 garantit que les restrictions d'accès sur chacune des pages sont identiques sur tous les pairs du réseau, et que les documents ne sont visibles et modifiables que par un groupe d'utilisateurs prédéfini, ici le groupe \emph{MandrivaGroup}. La figure~\ref{fig:rights-replication} représente l'intégration dans Doc4-2 des modifications des droits d'accès apportés sur Doc4-1.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/rights-replication}
\end{framed}
\caption{Propagation des droits d'accès}
\label{fig:rights-replication}
\end{figure}
 

\subsection{Protection du réseau par mot de passe}

XWiki Concerto permet de protéger un réseau P2P par un mot de passe via la console de création de réseau XWoot. L'écran de paramétrage de la figure~\ref{fig:group-passwd} montre comment assigner un mot de passe au réseau Doc4.

\begin{figure}[h]
\centering
\begin{framed}
\includegraphics[width=0.98\linewidth]{figures/group-passwd}
\end{framed}
\caption{Protection du réseau Doc4 par un mot de passe}
\label{fig:group-passwd}
\end{figure}


\section{Evaluation}


L'évaluation de la deuxième version du prototype a consisté à évaluer qualitativement les fonctionnalités et l'ergonomie de l'application en impliquant plusieurs utilisateurs dans l'exploitation de l'application Doc4 Mandriva. 

Une évaluation a été menée sur le prototype XWiki Concerto 2.0 auprès du même groupe de 10 utilisateurs parmi les employés Mandriva et les membres de la communauté Mandriva. Les améliorations apportées à l'application Doc4 ont été perçues et appréciées par les utilisateurs. Ceux-ci ont pu installer l'application à l'aide de l'installeur graphique sans problème et ont pu se connecter au réseau existant en utilisant le tutoriel XWiki Concerto fourni, alors que la version précédente ne permettait pas à un novice de se connecter (il fallait d'une part être dans une zone non protégée par un parefeu, et d'autre part connaître l'adresse IP externe de sa machine). Les gains en rapidité ont été très appréciés, ainsi que la nette amélioration globale de l'ergonomie de visualisation et d'édition de pages. Les fonctionnalités de traversée de parefeux ont pu être testées avec succès. La possibilité de répliquer des fichiers et des objets structurés a également été perçue comme une amélioration majeure du système.

Il reste néanmoins plusieurs points qui gagneront à être améliorés dans le futur pour une mise en production de la solution:

\paragraph{Ergonomie} Si l'ergonomie générale de l'application a été significativement améliorée entre la version 1.5 et la version 2.0 du prototype, l'intégration de l'administation d'XWoot dans XWiki faciliterait grandement l'utilisation de la plateforme. Le paramétrage des pages à répliquer nécessite un redémarrage du serveur alors que c'est un paramètre susceptible de changer relativement fréquemment au fur et à mesure de l'évolution d'une application. Cette rigidité de paramétrage est peu compatible avec la vision wiki en général. De même concernant la définition des classes et des champs à répliquer. Des informations complémentaires sur l'état du réseau seraient également souhaitables.

\paragraph{Gestion de l'historique} Comme mentionné dans les scénarios d'utilisation, les patchs XWiki Concerto une fois propagés sur le réseau sont ensuite appliqués sur chaque noeud par un utilisateur applicatif unique (nommé \emph{Concerto} dans les scénarios ci-dessus), ce qui ne permet pas de suivre sur chacun des pairs les auteurs des modifications. Il est important que dans les versions ultérieures, l'historique sur chaque noeud du réseau retrace le plus précisément possible la succession d'opérations tel qu'elles se sont effectivement produites sur le noeud sur lequel elles ont été déclenchées.

\paragraph{Performance} La vitesse d'intégration de patchs par chaque pair est encore trop lente pour que les grands volumes d'objets nécessaires à la gestion des métadonnées de milliers de paquets de la distribution Mandriva puissent être entièrement administrés par XWiki Concerto. 

\paragraph{Résolution de conflits} La méthode des transformées opérationnelles présentées dans le document de spécification initial semble très puissante pour gérer la résolution de conflits sur des champs d'objets structurés comme sur les champs texte mais elle n'a pu être mise en oeuvre dans le cadre du projet.

\paragraph{Règles de réplication} Comme indiqué dans le document initial de spécification du cas d'utilisation, il serait très utile de pouvoir définir de façon plus fine les règles de partage de pages, de sorte que toutes les pages réplicables ne soient pas forcément répliquées sur l'intégralité du réseau mais seulement sur une partie des pairs, chacun d'eux ayant latitude de spécifier les pages dont il souhaite recevoir les modifications et celles qu'il souhaite ou non propager.

\paragraph{Sécurité} La sécurité des données n'est assurée que par la protection du réseau par un mot de passe. Les données propagées n'étant pas chiffrées, l'utilisation ne peut être appliquée au cas de données sensibles. Ce n'est pas un problème réel pour le cas d'utilisation Mandriva proprement dit, mais cela en deviendrait un dans le cas où Mandriva retiendrait la solution XWiki Concerto pour la gestion de ses extranets et de son intranet.  

\paragraph{Accès depuis des terminaux mobiles} Si Doc4 est bien utilisable depuis des netbooks, la skin réalisée pour l'iPhone n'a pu être mise en oeuvre dans le contexte spécifique de Doc4.

Concernant strictement l'application Doc4 Mandriva, la fonctionnalité d'interrogation de la documentation Mandriva depuis une ligne de commande telle que décrite dans le livrable de spécification initial L2, n'a pu être implémentée en temps voulu. Elle pourra l'être aisément dans une version ultérieure de Doc4, via la création d'un service Web dédié au sein d'XWiki.

\section{Perspectives}

L'application Doc4 Mandriva ouvre de nombreuses perspectives d'utilisation P2P d'XWiki Concerto. Si la version 2.0 XWiki Concerto peut certes gérer les de pages wiki des logiciels Mandriva, elle n'est pas encore en mesure de répliquer et d'intégrer en un temps raisonnable la totalité des contenus structurés de Doc4, contenus qui représentent des giga octets de données et dont la génération nécessite d'importantes capacités de calcul. Les prochains défis pour XWiki Concerto sont d'une part de pouvoir gérer des volumes de contenus encore plus importants pour simplifier les tâches d'administration des données d'applications réparties complexes et pour en améliorer les performances de façon linéaire avec l'augmentation du nombre de serveurs, et d'élargir ce type d'approche P2P au domaine du calcul distribué, de façon à pouvoir distribuer des services sur le réseau en plus de distribuer des contenus, et confier des tâches spécifiques à certains noeuds du réseau en fonction de leur disponibilité.  

\section{Conclusion}

La mise en oeuvre de la version 2.0 d'XWiki Concerto dans le contexte de l'application Doc4 Mandriva d'une gestion collaborative de la documentation a permis de valider fonctionnellement les cas d'utilisation de rédaction collaborative sur réseau pair-à-pair et de travail en mode déconnecté, et de montrer l'intérêt de la plateforme XWiki pour la création d'applications collaboratives métier. Les objectifs initiaux ont été atteints dans l'ensemble et de nombreuses perspectives se présentes quant à l'évolution fonctionnelle de l'application en termes de capacité de stockage et de distribution de services. L'application réalisée est amenée à devenir l'application de référence pour la gestion collaborative de la documentation Mandriva. Le projet a renforcé l'intérêt de Mandriva pour la technologie XWiki. Les futures améliorations P2P d'XWiki Concerto en feront certainement une platetforme de choix pour la gestion de l'intranet et des extranets nouvelle génération dont Mandriva compte se doter en 2009. 







